home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-03-06 | 3.9 KB | 115 lines | [TEXT/MPS ] |
- // Modeller_Document.h
- //
- // Document related data structures and function prototypes for the
- // document type used in the modeller application
- //
- // Modification History
- //
- // 11/26/94 nick initial cut - symantec proto_helper app, add defines
- // and strip stuff from the globals.h file
- // 01/24/95 nick add field for backfacing style
-
- #ifndef _MODELLER_DOCUMENT_H_
- #define _MODELLER_DOCUMENT_H_
-
-
- #include "Modeller_Offscreen.h"
-
- // Data Structures.
-
- typedef struct WindowOffscreen {
- CGrafPtr windowPort;
- GDHandle windowDevice;
- GWorldPtr offscreenWorld;
- } WindowOffscreen;
-
- // Data Structures.
-
- typedef struct _DocumentRecord {
- WindowPtr theWindow;
- FSSpec theFileSpec ;
- short fRefNum;
- short dirty;
-
- #ifdef PODIUM_APP
- // the main difference between modeller and podium is that
- // podium has a background picture that is displayed behind
- // the group, and that the group uses a pixmap draw context
- // which is variable sized and "floats" above the background
- // picture. To make this work, we need 2 extra GWorlds, one
- // for the BG picture and one to attach to the pixmap draw
- // context
-
- GWorldPtr bgOffscreen ; // holds a pict the size of the main window.
- GWorldPtr screenBuffer ; // use for compositing to reduce flicker
- // same size as the above.
-
- GWorldPtr geometriesOffscreen ; // initially a 200x200 offscreen for the geo's.
- GWorldPtr maskOffscreen ; // same size as geo's - 1 bit mask.
-
- Rect bgRect ; //
- Rect dropArea;
- GWorldPtr drawContextOffscreen;
- Point mouseLocation;
- TQ3Object currentlySelectedObject;
- TQ3Boolean selected;
-
- #endif
-
-
- TQ3GroupObject documentGroup; // main group for the document
- TQ3ViewObject theView; // the documents view object
- TQ3Boolean animateLights, animateModel; // set to true if we are animating either the lights or the model
- TQ3Boolean light; // set to true if the three lights are on
- TQ3Boolean shaded; // we provide flat, per vertext or per pixel
- TQ3GroupObject dynamicLights; // the lighting for the scene
- TQ3GroupObject light1, light2, light3; // these objects indicate where the lights are (i.e. they are not the lights, but
- // they indicate the location of the lights
- TQ3TransformObject lightXform1, lightXform2, lightXform3; // transforms for the lights (used to map to their current position)
- TQ3Matrix4x4 modelRotation; // the transform for the model
- TQ3InterpolationStyle currentInterpolation;
-
- TQ3StyleObject backfacingStyle ; // the style to use for backface removal
- TQ3ShaderObject illuminationShader ;
-
- TQ3Point3D documentGroupCenter;
-
- float documentGroupScale;
-
- TQ3SharedObject viewHints; // ViewHints for this doc
-
- TQ3Vector3D rotationDir;
- } DocumentRecord, *DocumentPtr, **DocumentHandle ;
-
- /* Modeller_offscreen.c */
- TQ3Status DrawOffscreen(DocumentPtr theDocument);
- void DrawOnscreen(DocumentPtr theDocument);
-
-
- // Modeller_document.c
- void AdjustDocumentView(DocumentPtr theDocument);
- void AdjustScrollBar(DocumentPtr theDocument);
- void PositionDocumentParts(DocumentPtr theDocument);
-
- DocumentPtr NewDocument( TQ3SharedObject viewHints, TQ3GroupObject group );
-
- Boolean CloseDocument(DocumentPtr theDocument);
- Boolean CloseAllDocuments(void);
-
- void DoActivateDocument(DocumentPtr theDocument, short activate);
- DocumentPtr GetDocumentFromWindow(WindowPtr theWindow);
-
- TQ3Status InitializeGroup(TQ3GroupObject group);
-
-
- TQ3Status ModellerDocument_NewLights( DocumentPtr theDocument ) ;
- TQ3CameraObject ModellerDocument_NewCamera(WindowPtr theWindow);
- TQ3DrawContextObject ModellerDocument_NewDrawContext(WindowPtr theWindow);
- TQ3Status ModellerDocument_UpdateView( DocumentPtr theDocument, TQ3SharedObject viewHints ) ;
-
- #ifdef PODIUM_APP
- // these functions are needed only for podium
- TQ3DrawContextObject ModellerDocument_NewPixmapDrawContext(DocumentPtr theDocument) ;
- #endif
-
- #endif